import pandas as pd
from datetime import datetime

# 读取 Excel 文件
file_path = r'D:\test\test.xlsx'
try:
    df = pd.read_excel(file_path)

    # 自定义一个函数来处理日期转换
    def convert_date(date_str):
        try:
            return pd.to_datetime(date_str)
        except ValueError:
            return date_str

    # 应用自定义函数到 '密码过期时间' 列
    df['密码过期时间'] = df['密码过期时间'].apply(convert_date)

    # 获取今天的日期
    today = datetime.today()

    # 计算密码剩余天数并添加为新列
    def calculate_remaining_days(date):
        if isinstance(date, pd.Timestamp):
            return (date - pd.Timestamp(today)).days
        return date

    df['密码剩余天数'] = df['密码过期时间'].apply(calculate_remaining_days)

    # 筛选出密码剩余天数大于 0 且小于 30 的数据
    filtered_df = df[(pd.to_numeric(df['密码剩余天数'], errors='coerce') > 0) & (pd.to_numeric(df['密码剩余天数'], errors='coerce') < 30)]

    # 统计筛选后的数据数量
    count = len(filtered_df)

    # 打印筛选后的数据
    print(filtered_df)

    # 打印统计结果
    print(f"密码剩余天数大于 0 且小于 30 的数据数量为: {count}")

except FileNotFoundError:
    print(f"未找到文件: {file_path}，请检查文件路径是否正确。")
except KeyError:
    print("数据中不存在 '密码过期时间' 列，请检查文件内容。")
except Exception as e:
    print(f"发生未知错误: {e}")